接下來提到提的這兩個,是屬於昨天所講排成的融合版
話說,不是才稍微過個幾天,比較有太陽的日子。怎麼好像又有颱風要進來...
Multilevel Queue Scheduling 是一種將Ready Queue劃分成多個獨立子Queue的排程方式。系統會依據 process 的 特性(priority、process type、使用者類別、資源需求等),將它們分配到不同的隊列中。OS會根據不同類型的 process,把它們分到不同的Queue中。每個Queue就像一個「小型排程世界」,有自己的排程策略與規則。
Multilevel Queue Scheduling有3個特性:
第一,每個隊列採用不同的排程演算法。像是:
第二,OS會有一個固定優先權(Fixed-Priority Preemptive) 的規則:只要高優先的隊列有 process,就會搶佔低優先隊列的 CPU。如果高優先隊列空了,才會輪到低優先隊列。
第三,Time Slicing(時間切片分配):為了避免高優先隊列長期佔滿 CPU,可設定時間比例(如:高優先佔 50%、中優先 30%、低優先 20%)。這種方式可確保低優先隊列的 process 最終也能獲得 CPU。
Multilevel Feedback Queue Scheduling(MLFQ)是一種高度靈活且自適應的 CPU 排程演算法。與 Multilevel Queue Scheduling最大的不同是:process 可以在不同的隊列之間移動,優先權會依據它的行為和等待時間動態調整。
而為了要達到「隊列之間移動」這件事,這邊要提一下MFLQ的核心:
第一,初始分配:所有新來的 process 一律從最高優先權隊列開始(通常為最短時間片的 Round Robin)。
第二,降級(Demotion):如果 process 在該層隊列的時間片(Time Quantum)內沒完成,就會被移到下一層優先權較低的隊列。
第三,升級(Promotion):如果低優先權隊列的 process 長時間沒被執行,系統會提升它的優先權(防止飢餓 Starvation)。
這種機制使得排程系統能根據 process 的行為自動調整優先權與排程策略,達到平衡效能與公平性的目的。常見設計如下:
新 process 一律從最高優先 queue 開始(Queue 0)。如果一個 process 在其 quantum 用完時 還沒完成執行,就會被「降級」到下一層 queue。長時間沒被執行的 process 可以「升級」,提升其優先權(用於防止飢餓)。
然而,Multilevel Feedback Queue Scheduling的缺點如下:
第一,複雜度高:管理多層 queue 與調整規則需要精密設計。
第二,參數設定困難:quantum 長度、升降級規則不易調整到最優值。
第三,實作負擔重:實際在作業系統中實作需考量 context switch 成本與公平性策略。
這邊在硬塞一個補充進來ww
Contention Scope要討論的是:一條執行緒(Thread)到底是和誰在競爭 CPU 使用權?作業系統要如何決定哪個 thread 被排到 CPU 上?
而這個問題,就是Contention Scope。主要來說,Contention Scope可以可以分為兩種:
第一,行程層級競爭(Process-Contention Scope, PCS):同一個 process 裡的 threads 互相搶 CPU(由使用者層級排程器決定)
第二,系統層級競爭(System-Contention Scope, SCS):所有 thread(整個系統)都搶 CPU(由作業系統 kernel 決定)
如果用比喻的話,就有點像公司的升職競爭
- PCS就像部門內升遷,你跟自己部門(process)內的同事在搶一個升遷名額(CPU),這是部門內部自己排的順序。就算別的部門很閒,也跟你們搶不到 CPU。這樣升遷規則是「內部管理決定」。
- SCS就像公司整體升遷,全公司的人都來搶升遷名額(CPU),你不只要跟部門同事搶,還要跟整個公司的精英們競爭,誰能力強、運氣好就先升職。這是公司層級的競爭,由總公司(kernel)排定順序。